More Related Content
Similar to VPとSPIDERを使ったMySQL運用
Similar to VPとSPIDERを使ったMySQL運用 (20)
VPとSPIDERを使ったMySQL運用
- 6. 自己紹介
上薗 竜太 (kamipo)
MySQL / Perl
IRC
#mysql-casual@freenode
#perl-casual@freenode
Advent Calendar 2010
MySQL Casual Advent Calendar 2010
casual - JPerl Advent Calendar 2010
- 7. About VP & SPIDER
MySQLのストレージエンジンプラグイン
VPはカラムごとにテーブルを垂直分割
SPIDERはテーブルを複数ホストに水平分割
斯波さんが作ってる
wild-growth-ja.blogspot.com
launchpad.net/spiderformysql
launchpad.net/vpformysql
- 10. VPのデータコピー用UDF
CREATE TABLE t1 (
a int(10) unsigned NOT NULL PRIMARY KEY,
b int(10) unsigned NOT NULL
) ENGINE=MyISAM;
SELECT * FROM t1;
+---+----+
|a|b|
+---+----+
| 1 | 10 |
| 2 | 20 |
| 3 | 30 |
| 4 | 40 |
+---+----+
- 11. VPのデータコピー用UDF
CREATE TABLE t2 (
a int(10) unsigned NOT NULL PRIMARY KEY,
b int(10) unsigned NOT NULL
) ENGINE=InnoDB;
CREATE TABLE t_vp (
a int(10) unsigned NOT NULL PRIMARY KEY,
b int(10) unsigned NOT NULL
) ENGINE=VP CONNECTION 'zru "1", tnl "t1 t2"';
SELECT vp_copy_tables('t_vp', 't1', 't2');
- 12. SPIDERテーブルを作る
CREATE TABLE t_spd (
a int(10) unsigned NOT NULL PRIMARY KEY,
b int(10) unsigned NOT NULL
) ENGINE=SPIDER
CONNECTION 'host "db002", user "spider", tbl "t1"';
- 13. VPとSPIDERを組み合わせる
CREATE TABLE t_vp (
a int(10) unsigned NOT NULL PRIMARY KEY,
b int(10) unsigned NOT NULL
) ENGINE=VP CONNECTION 'zru "1", tnl "t1 t_spd"';
SELECT vp_copy_tables('t_vp', 't1', 't_spd');
- 15. スクリプト実行例
$ mygrate_to --host new-db-host -u kamipo -d new_db table1
CREATE TABLE `table1_new` LIKE `table1`;
ALTER TABLE `table1_new` ENGINE SPIDER
CONNECTION 'host "new-db-host", user "kamipo", database "ne
"table1"';
CREATE TABLE `table1_dummy` LIKE `table1`;
CREATE TABLE `table1_vp` LIKE `table1`;
ALTER TABLE `table1_vp` ENGINE VP
CONNECTION 'zru "1", tnl "table1_dummy table1_new"';
RENAME TABLE
`table1_dummy` TO `table1_useless`,
`table1` TO `table1_dummy`,
`table1_vp` TO `table1`;
SELECT vp_copy_tables('table1', 'table1_dummy', 'table1_new');
RENAME TABLE
`table1` TO `table1_vp`,